package com.internetCafes.spms.web.customer.controller;

import com.internetCafes.spms.common.base.BaseWebController;
import com.internetCafes.spms.common.utils.entity.RR;
import com.internetCafes.spms.common.utils.entity.page.PageItemDTO;
import com.internetCafes.spms.common.utils.entity.page.PageItemVO;
import com.internetCafes.spms.core.annotation.SysLog;
import com.internetCafes.spms.web.customer.bizservice.role.IEntRoleInfoBizService;
import com.internetCafes.spms.web.customer.model.role.*;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 角色数据 前端控制器
 * </p>
 *
 * @author Zj
 * @since 2021-10-13
 */
@RestController
@RequestMapping("/ent/role")
public class EntRoleInfoController extends BaseWebController {

    @Autowired
    private IEntRoleInfoBizService roleInfoBizService;

    /**
     * 获取菜单树形结构
     */
    @GetMapping("/menu/list")
    public RR<List<RoleMenuListRes>> roleMenuList() {
        return RR.success(roleInfoBizService.listRoleMenu());
    }

    /**
     * 获取菜单树形结构
     */
    @GetMapping("/menu/tree")
    public RR<List<RoleMenuTreeRes>> roleMenuTree() {
        return RR.success(roleInfoBizService.getMenuTree());
    }

    /**
     * 列表
     */
    @GetMapping("/list")
    public RR<List<EntRoleListRes>> list() {
        return RR.success(roleInfoBizService.roleList());
    }

    /**
     * 企业角色详情
     */
    @GetMapping("/{id}")
    @RequiresPermissions("ent:role:detail")
    public RR<EntRoleDetailRes> detail(@PathVariable Long id) {
        return RR.success(roleInfoBizService.getRoleInfoDetail(id));
    }

    /**
     * 企业角色树型列表
     */
    @GetMapping("/tree")
    public RR<List<EntRoleTreeRes>> tree() {
        return RR.success(roleInfoBizService.getRoleTreeList());
    }

    /**
     * 企业角色分页
     */
    @PostMapping("/paging")
    @RequiresPermissions("ent:role:paging")
    public RR<PageItemVO<EntRolePagingRes>> paging(@RequestBody PageItemDTO<EntRolePagingReq> dto) {
        return RR.success(roleInfoBizService.roleInfoPaging(dto));
    }

    /**
     * 更新企业角色
     */
    @SysLog("更新企业角色")
    @PutMapping()
    @RequiresPermissions("ent:role:update")
    public RR<Void> update(@RequestBody EntRoleUpdateReq req) {
        return roleInfoBizService.updateRoleInfo(req) ? RR.success() : RR.fail();
    }

    /**
     * 删除企业角色
     */
    @SysLog("删除企业角色")
    @DeleteMapping("/{idList}")
    @RequiresPermissions("ent:role:delete")
    public RR<Void> delete(@PathVariable Long[] idList) {
        return roleInfoBizService.deleteRoleByIdArray(idList) ? RR.success() : RR.fail();
    }

    /**
     * 新增企业角色
     */
    @SysLog("新增企业角色")
    @PostMapping("/save")
    @RequiresPermissions("ent:role:save")
    public RR<Void> save(@RequestBody EntRoleSaveReq req) {
        return roleInfoBizService.save(req) ? RR.success() : RR.fail();
    }
}
